package com.domainlanguage;

import com.domainlanguage.money.MoneyType;
import com.domainlanguage.money.MoneyTimeRateType;
import com.domainlanguage.base.RatioType;
import com.domainlanguage.time.*;
import org.hibernate.type.CompositeCustomType;
import org.hibernate.type.ImmutableType;

/**
 * Access to the Time And Money Hibernate mapping types.
 *
 */
public class TimeAndMoneyTypes {

    public static final CompositeCustomType BIG_INT_TIME_INTERVAL = new CompositeCustomType(BigIntTimeIntervalType.class, null);

    public static final ImmutableType BIG_INT_TIME_POINT = new BigIntTimePointType();

    public static final ImmutableType CALENDAR_DATE = new CalendarDateType();

    public static final CompositeCustomType CALENDAR_INTERVAL = new CompositeCustomType(CalendarIntervalType.class, null);

    public static final ImmutableType CALENDAR_MINUTE = new CalendarMinuteType();

    public static final ImmutableType DURATION = new DurationType();

    public static final ImmutableType HOUR_OF_DAY = new HourOfDayType();

    public static final ImmutableType MINUTE_OF_HOUR = new MinuteOfHourType();

    public static final CompositeCustomType TIME_INTERVAL = new CompositeCustomType(TimeIntervalType.class, null);

    public static final ImmutableType TIME_OF_DAY = new TimeOfDayType();

    public static final ImmutableType TIME_POINT = new TimePointType();

    public static final CompositeCustomType TIME_RATE = new CompositeCustomType(TimeRateType.class, null);

    public static final ImmutableType TIME_UNIT = new TimeUnitType();

    public static final CompositeCustomType MONEY_TIME_RATE = new CompositeCustomType(MoneyTimeRateType.class, null);

    public static final CompositeCustomType MONEY = new CompositeCustomType(MoneyType.class, null);

    public static final CompositeCustomType RATIO = new CompositeCustomType(RatioType.class, null);

}
